package com.demo.service;

import com.demo.pojo.entity.ClazzTeacher;

import java.util.List;

/**
 * 班级-教师关联服务接口
 */
public interface ClazzTeacherService {
    
    /**
     * 添加班级-教师关联
     * @param clazzTeacher 关联信息
     * @return 是否成功
     */
    boolean addClazzTeacher(ClazzTeacher clazzTeacher);
    
    /**
     * 批量添加班级-教师关联
     * @param clazzId 班级ID
     * @param teacherIds 教师ID列表
     * @param roleType 角色类型
     * @return 是否成功
     */
    boolean addClazzTeachers(Long clazzId, List<Long> teacherIds, Integer roleType);
    
    /**
     * 删除班级-教师关联
     * @param id 关联ID
     * @return 是否成功
     */
    boolean deleteClazzTeacher(Long id);
    
    /**
     * 删除班级的所有教师关联
     * @param clazzId 班级ID
     * @return 是否成功
     */
    boolean deleteByClazzId(Long clazzId);
    
    /**
     * 删除教师的所有班级关联
     * @param teacherId 教师ID
     * @return 是否成功
     */
    boolean deleteByTeacherId(Long teacherId);
    
    /**
     * 更新班级-教师关联
     * @param clazzTeacher 关联信息
     * @return 是否成功
     */
    boolean updateClazzTeacher(ClazzTeacher clazzTeacher);
    
    /**
     * 根据班级ID查询教师列表
     * @param clazzId 班级ID
     * @return 教师ID列表
     */
    List<Long> getTeachersByClazzId(Long clazzId);
    
    /**
     * 根据教师ID查询班级列表
     * @param teacherId 教师ID
     * @return 班级ID列表
     */
    List<Long> getClazzesByTeacherId(Long teacherId);
    
    /**
     * 根据班级ID和角色类型查询教师
     * @param clazzId 班级ID
     * @param roleType 角色类型（1:班主任 2:副班主任/辅导员）
     * @return 教师ID
     */
    Long getTeacherByClazzIdAndRole(Long clazzId, Integer roleType);
}


